import { apiClient } from 'axiom-view';

const BASE_URL = '/ai/knowledge';

/**
 * AI 对话相关的API
 */
export const chatApi = {
  /**
   * 获取所有可用的 LLM 模型配置档案
   * @returns {Promise<ApiResponse<LLMProfileVO[]>>}
   */
  listLlmProfiles() {
    return apiClient.get(`${BASE_URL}/llm-profiles`);
  },

  /**
   * 对知识库进行 AI 流式查询
   * @param {AIQueryDTO} data - AI 查询参数
   * @param {function(content: string): void} onDelta - 接收到内容增量时的回调
   * @param {AbortSignal} signal - 用于中止请求的 AbortSignal
   * @returns {Promise<void>}
   */
  queryStream(data, onDelta, signal) {
    // [重构] 定义一个适配器函数来处理原始数据字符串
    const onDataString = (eventDataString) => {
      try {
        const parsed = JSON.parse(eventDataString);
        // 在这里处理特定于 AI 业务的数据结构
        if (parsed.role === 'assistant' && typeof parsed.content === 'string') {
          // 只将最终需要的内容传递给上层回调
          onDelta(parsed.content);
        }
      } catch (e) {
        console.error('Failed to parse AI chat stream event:', eventDataString, e);
      }
    };

    // 调用通用的 postStream，并传入我们的解析适配器
    return apiClient.postStream(`${BASE_URL}/query-stream`, data, onDataString, signal);
  }
}; 